/*
 * @Author: thl t15945324431@163.com
 * @Date: 2023-10-16 10:26:33
 * @LastEditors: thl t15945324431@163.com
 * @LastEditTime: 2024-05-17 11:47:55
 * @FilePath: \cw_web\md\src\utils\getTreeData.js
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
import _ from 'lodash';
/**
 * @desc 根据pid返回树形结构
 * @param {array} list 需要转换的数据
 * @return {arrayTree} 返回树形结构
 * */

export function getTreeData(list) {
    function getTrees(pid = '-1') {
        if (pid === '-1') {
            // 如果没有父id（第一次递归的时候）将所有父级查询出来
            return list.filter(item => item.menuParentId === '-1').map(item => {
                // 通过父节点ID查询所有子节点
                item.key = item.storeMenuId
                if (getTrees(item.storeMenuId).length) {
                    item.children = getTrees(item.storeMenuId)
                }
                return item
            })
        } else {
            return list.filter(item => item.menuParentId === pid).map(item => {
                // 通过父节点ID查询所有子节点
                item.key = item.storeMenuId
                if (getTrees(item.storeMenuId).length) {
                    item.children = getTrees(item.storeMenuId)
                }
                return item
            })
        }
    }
    let arr = getTrees()
    return arr;
}

export function getTreeData1(list) {
    function getTrees(pid = '-1') {
        if (pid === '-1') {
            // 如果没有父id（第一次递归的时候）将所有父级查询出来
            return _.filter(list, (item, key) => item.menuParentId === '-1').map(item => {
                // 通过父节点ID查询所有子节点
                item.key = item.storeMenuId
                if (getTrees(item.storeMenuId).length) {
                    item.children = getTrees(item.storeMenuId)
                }
                return item
            })
        } else {
            return list.filter(item => item.menuParentId === pid).map(item => {
                // 通过父节点ID查询所有子节点
                item.key = item.storeMenuId
                if (getTrees(item.storeMenuId).length) {
                    item.children = getTrees(item.storeMenuId)
                }
                return item
            })
        }
    }
    let arr = getTrees()
    return arr;
}

/*
* @Description: 多级树按序号排序
* @Author: Thl
* @Date: 2024-05-17
* @LastEditTime: 2024-05-17
*/
export function sortTree(tree) {  
    // 对每个节点的子节点数组进行排序  
    function sortChildren(nodes) {  
        if (!Array.isArray(nodes)) return;  
        nodes.sort((a, b) => a.sorted - b.sorted); 
        nodes.forEach(node => sortChildren(node.children)); // 递归排序子节点  
    }  
  
    // 开始排序  
    sortChildren(tree); // 假设 tree 有一个 children 属性  
    return tree; // 返回排序后的树  
}  